package top.zhangjianyong.tools.parm.wechat;

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import lombok.Data;

/**
 * @author zhangjianyong
 * @since 2025/3/18 下午5:27
 */
@Data
@JacksonXmlRootElement(localName = "xml") // 定义根元素名称
public class WechatRequestMessage {
    @JacksonXmlProperty(localName = "ToUserName") // 映射 XML 元素
    private String toUserName;//开发者微信号
    @JacksonXmlProperty(localName = "FromUserName") // 映射 XML 元素
    private String fromUserName;//发送方账号（一个OpenID）
    @JacksonXmlProperty(localName = "CreateTime") // 映射 XML 元素
    private Long createTime;//消息创建时间 （整型）
    @JacksonXmlProperty(localName = "MsgType") // 映射 XML 元素
    private String msgType;//消息类型，文本为text,事件event
    @JacksonXmlProperty(localName = "Content") // 映射 XML 元素
    private String content;//文本消息内容
    @JacksonXmlProperty(localName = "MsgId") // 映射 XML 元素
    private String msgId;//消息id，64位整型
    @JacksonXmlProperty(localName = "MsgDataId") // 映射 XML 元素
    private String msgDataId;//消息的数据ID（消息如果来自文章时才有）
    @JacksonXmlProperty(localName = "Idx") // 映射 XML 元素
    private String idx;//多图文时第几篇文章，从1开始（消息如果来自文章时才有）
    @JacksonXmlProperty(localName = "Event") // 映射 XML 元素
    private String event;//事件类型，subscribe(订阅)、unsubscribe(取消订阅)

    public WechatResponseMessage response(String content) {
        WechatResponseMessage message = new WechatResponseMessage();
        message.setContent(content);
        message.setToUserName(this.fromUserName);
        message.setFromUserName(this.toUserName);
        message.setMsgType("text");
        message.setCreateTime(System.currentTimeMillis() / 1000);
        return message;
    }
}
